package pe.edu.upc.dew.Grupo1.web;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.web.context.support.WebApplicationContextUtils;

import pe.edu.upc.dew.Grupo1.model.Cine;
import pe.edu.upc.dew.Grupo1.model.Local;
import pe.edu.upc.dew.Grupo1.model.Tipo;
import pe.edu.upc.dew.Grupo1.model.Usuario;
import pe.edu.upc.dew.Grupo1.service.LocalService;
import pe.edu.upc.dew.Grupo1.service.TipoService;
import pe.edu.upc.dew.Grupo1.service.UsuarioService;
/**
 * Servlet implementation class MantUsuarioServlet
 */
public class MantUsuarioServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private UsuarioService usuarioService;
	private TipoService tipoService;
	private LocalService localService;
	
	@Override
	public void init(ServletConfig config) throws ServletException {
		this.usuarioService = WebApplicationContextUtils
				.getWebApplicationContext(config.getServletContext()).getBean(
						"usuarioService", UsuarioService.class);
		this.tipoService = WebApplicationContextUtils
		.getWebApplicationContext(config.getServletContext()).getBean(
				"tipoService", TipoService.class);
		this.localService = WebApplicationContextUtils
		.getWebApplicationContext(config.getServletContext()).getBean(
				"localService", LocalService.class);
	}

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		String paramCodigoUsuario = req.getParameter("codigoUsuario");

		HttpSession session=req.getSession();
		if(session.getAttribute("usuario") == null)
		{
			req.getRequestDispatcher("login.jsp").forward(req,resp);
			return;
		}
		
		Tipo tipo=new Tipo();
		List<Tipo> lista=tipoService.GetTipoPorCodigo("");
		req.setAttribute("tipos", lista);
		
		Local local=new Local();
		local.setNombre("");
		List<Local> listalocal=localService.GetLocalesPorRazonSocial(local);
		req.setAttribute("locales", listalocal);
		
		if (paramCodigoUsuario != null && !paramCodigoUsuario.equals("")) {
			int codigoUsuario = Integer.parseInt(paramCodigoUsuario);

			Usuario usuario = usuarioService.GetUsuarioPorCodigo(codigoUsuario);

			req.setAttribute("usuarioA", usuario);
		}

		req.getRequestDispatcher("mant_usu.jsp").forward(req, resp);
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		
		HttpSession session=req.getSession();
		if(session.getAttribute("usuario") == null)
		{
			req.getRequestDispatcher("login.jsp").forward(req,resp);	
			return;
		}
		
		try {
			
			String codigoUsuario= req.getParameter("codigo");
			String nombre= req.getParameter("nombre");
			String apellido=req.getParameter("apellido");
			String telefono=req.getParameter("telefono");
			String direccion=req.getParameter("direccion");
			String login=req.getParameter("logi");
			String clave=req.getParameter("clave");
			
			int codigoLocal = Integer.parseInt(req.getParameter("local"));
			String codigotipo = req.getParameter("tipo");
			
			Local local=new Local();
			local.setCodigoLocal(codigoLocal);

			Tipo tipo=new Tipo();
			tipo.setTipo(codigotipo);

			Usuario usuario=new Usuario();
			
			usuario.setNombre(nombre);
			usuario.setApellido(apellido);
			usuario.setTelefono(telefono);
			usuario.setDireccion(direccion);
			usuario.setLogin(login);
			usuario.setClave(clave);		
			
			usuario.setLocal(local);
			usuario.setTipo(tipo);
			
			int codigo=0;
			
			if(codigoUsuario== null || codigoUsuario.equals(""))
			{
				codigo= usuarioService.GetConteoUsuarios()+1;
				usuario.setCodigoUsuario(codigo);
				
				usuarioService.InsertUsuario(usuario);
			}
			else{
				codigo=Integer.parseInt(codigoUsuario);
				usuario.setCodigoUsuario(codigo);
				
				usuarioService.UpdatePeliculaPorCodigo(usuario);
			}
			
			req.getRequestDispatcher("ListasCartelera").forward(req,resp);
		} catch (Exception e) {
			System.out.println(e.getMessage());
			req.getRequestDispatcher("error.jsp").forward(req,resp);
		}
				
	}

}
